Rust
Rust是一种注重高效、安全、并行的系统程序语言。它有以下特定:
- 零开销抽象
- 转移语义
- 保证内存安全
- 没有数据竞争的线程
- trait泛型
- 模式匹配
- 类型推断
- 极小的运行时
- 高效的C绑定
Rust是一门有希望代替C++的语言,所以确实值得学习。于是这也就鼓捣了以下emacs
下的环境配置。
环境配置
下载Rust
安装官方教程下载即可:
1 | curl https://sh.rustup.rs -sSf | sh |
Rust的包管理工具Cargo下载的包路径为~/.cargo
,所以能直接调用相关命令,我们把它加到环境变量里:
1 | export PATH="$HOME/.cargo/bin:$PATH" |
还需要注意一点,cargo.io
站点设置在国外,国内下载会很慢,所以还是要改一下源。我们就中科大的源就好。
修改$HOME/.cargo/config
为:
1 | [source.crates-io] |
同时在环境变量里添加:
1 | export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup |
rust-mode
rust-mode
是Rust的major mode
,直接M-x package-install rust-mode
后将rust-mode
加入auto-mode-list
中:
1 | (setq auto-mode-alist (append '(("\\.rs\\'" . rust-mode)) auto-mode-alist)) |
cargo
cargo.el
是emacs
内使用cargo
命令的插件,M-x package-install cargo
下载。
配置:
1 | (add-hook 'rust-mode-hook 'cargo-minor-mode) |
快捷键:
- C-c C-c C-r:
cargo run
- C-c C-c C-b:
cargo build
- C-c C-c C-t:
cargo test
flycheck-rust
flycheck-rust
用于语法检查,M-x package-install flycheck-rust
,
1 | (add-hook 'rust-mode-hook #'flycheck-rust-setup) |
rust-fmt
代码格式化工具,需要首先安装rustfmt
:
1 | cargo install rustfmt |
然后安装插件M-x package-install rustfmt
,配置如下:
1 | (define-key rust-mode-map (kbd "C-c C-f") #'rust-format-buffer) |
可以设置每次保存后自动格式化,但是我觉得不好用:
1 | (add-hook 'rust-mode-hook #'rustfmt-enable-on-save) |
rust racer
racer
是emacs
中Rust的代码提示插件,很好使,需要company
插件支持,首先下载company
,
1 | M-x package-install company |
下载racer
:
1 | cargo install racer |
需要Rust的源码以便eldoc
可以工作。配置如下:
1 | ;; rust racer (setq racer-rust-src-path (expand-file-name "~/rust-1.12.1/src")) (add-hook 'rust-mode-hook #'racer-mode) (add-hook 'racer-mode-hook #'eldoc-mode) (add-hook 'racer-mode-hook #'company-mode) (define-key rust-mode-map (kbd "TAB") #'company-indent-or-complete-common) (setq company-tooltip-align-annotations t) |
toml-mode
Rust使用TOML
文本来配置项目,toml-mode
提供对应的语法高亮,直接下载即可:
1 | M-x package-install toml-mode |
我们也可以在toml-mode
中使用company
以便有自动补全:
1 | (add-hook 'toml-mode-hook 'company-mode) |